﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BEL;

namespace Web_Guia_Digital_Georeferenciada
{
    public partial class MantenimientoDeUsuariosFinales : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {

                if(!IsPostBack)
                { 
                txtPass.Attributes["type"] = "password";
                BEL.Usuario usu = (Usuario)Session["Usuario"];
                if(usu==null){
                    btnBorrarUsuario.Visible = false;
                    btnGuardarCambios.Visible = false;
                    btnRegistro.Visible = true;                    
                }else{
                    btnBorrarUsuario.Visible = true;
                    btnGuardarCambios.Visible = true;
                    btnRegistro.Visible = false;

                    txtNomUsuario.Text = usu.UsuarioNombre;
                    txtPass.Text = usu.UsuarioPassword;
                    BEL.Cliente cli = Cliente.BuscarCliente(usu.UsuarioId);
                    txtNombre.Text = cli.Nombre;
                    txtApellido.Text = cli.Apellido;
                    txtDireccion.Text = cli.ClienteDireccion;
                    DDLCiudades.SelectedValue = Convert.ToString(cli.ClienteCiudad.CiudadId);
                    txtMail.Text = cli.ClienteMail;
                    DDLSexo.SelectedValue = cli.ClienteSexo;
                    txtTelefono.Text = cli.ClienteTelefono;
                    FechaNac.SelectedDate = cli.ClienteFechaNacimiento;

                }
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            try
            {
                Response.Redirect("~/PaginaPrincipal.aspx");
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
            
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            try
            {
                String nombreusuario = Convert.ToString(txtNomUsuario.Text);
                String pass = Convert.ToString(txtPass.Text);
                String nombre = Convert.ToString(txtNombre.Text);
                String apellido = Convert.ToString(txtApellido.Text);
                String direccion = Convert.ToString(txtDireccion.Text);
                int ciudad = Convert.ToInt32(DDLCiudades.SelectedValue);
                String mail = Convert.ToString(txtMail.Text);
                String sexo = DDLSexo.SelectedValue;
                String telefono = Convert.ToString(txtTelefono.Text);
                DateTime fechanac = FechaNac.SelectedDate;
                
                if ((BEL.Usuario.BuscarUsuario(nombreusuario)) == null)
                {
                     Usuario usu = BEL.Cliente.AltaCliente(nombreusuario, pass, BEL.Usuario.Roles.UsuarioFinal, nombre, apellido, direccion, ciudad, mail, sexo, fechanac, telefono);
                     if (usu != null)
                     {
                         //this.limpiarCampos(); 
                         Session["Usuario"] = usu;
                         Response.Redirect("~/PaginaPrincipal.aspx");
                    }
                    else
                    {
                        LabelError.Text = "No se dio de alta el usuario";
                    }
                }
                else {
                    LabelError.Text = "Ya existe un usuario con ese nombre de usuario";
                }
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
        }

        public void limpiarCampos() {
            try
            {
                txtNomUsuario.Text = "";
                txtPass.Text = "";
                txtNombre.Text = "";
                txtApellido.Text = "";
                txtDireccion.Text = "";
                txtMail.Text = "";
                txtTelefono.Text = "";
            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }            
        }

        protected void btnGuardarCambios_Click(object sender, EventArgs e)
        {
            try
            {
                String nombreusuario = Convert.ToString(txtNomUsuario.Text);
                String pass = Convert.ToString(txtPass.Text);
                String nombre = Convert.ToString(txtNombre.Text);
                String apellido = Convert.ToString(txtApellido.Text);
                String direccion = Convert.ToString(txtDireccion.Text);
                int ciudad = Convert.ToInt32(DDLCiudades.SelectedValue);
                String mail = Convert.ToString(txtMail.Text);
                String sexo = DDLSexo.SelectedValue;
                String telefono = Convert.ToString(txtTelefono.Text);
                DateTime fechanac = FechaNac.SelectedDate;

                if (nombreusuario != ((Usuario)Session["Usuario"]).UsuarioNombre)
                {
                    if ((BEL.Usuario.BuscarUsuario(nombreusuario)) == null)
                    {
                        Usuario usu = BEL.Cliente.ModificarCliente(((Usuario)Session["Usuario"]).UsuarioId, nombreusuario, pass, BEL.Usuario.Roles.UsuarioFinal, nombre, apellido, direccion, ciudad, mail, sexo, fechanac, telefono);
                        if (usu != null)
                        {
                            this.limpiarCampos();
                            Session["Usuario"] = usu;
                            Response.Redirect("~/PaginaPrincipal.aspx");
                        }
                        else
                        {
                            LabelError.Text = "No se modifico el usuario";
                        }
                    }
                    else
                    {
                        LabelError.Text = "Ya existe un usuario con ese nombre de usuario";
                    }
                }else {
                    Usuario usu = BEL.Cliente.ModificarCliente(((Usuario)Session["Usuario"]).UsuarioId, nombreusuario, pass, BEL.Usuario.Roles.UsuarioFinal, nombre, apellido, direccion, ciudad, mail, sexo, fechanac, telefono);
                    if (usu != null)
                    {
                        this.limpiarCampos();
                        Session["Usuario"] = usu;
                        Response.Redirect("~/PaginaPrincipal.aspx");
                    }
                    else
                    {
                        LabelError.Text = "No se modifico el usuario";
                    }
                }


            }
            catch (System.Exception ex)
            {
                Response.Write("<script>alert('Ha ocurrido un error en la aplicación')</script>" + ex.Message);
            }
            
        }

        protected void btnBorrarUsuario_Click(object sender, EventArgs e)
        {
            BEL.Usuario usu = (Usuario)Session["Usuario"];
            int retorno = Cliente.BorrarCliente(usu.UsuarioId);
            if (retorno > 0)
            {
                Session["Usuario"] = null;
                Response.Redirect("~/PaginaPrincipal.aspx");
            }
            else {
                LabelError.Text = "No se pudo dar de baja el usuario";
            }

        }

    
    }
}